package com.otv.encargado.dao;

import java.util.List;
import org.hibernate.SessionFactory;
import com.otv.model.Encargado;


/**
 * Class EncargadoDAO.
 */
public class EncargadoDAO implements IEncargadoDAO {
	
	/** El/la session factory. */
	private SessionFactory sessionFactory;


	@Override
	public void addEncargado (Encargado encargado) {
		getSessionFactory().getCurrentSession().save(encargado);
	}


	@Override
	public void updateEncargado(Encargado encargado) {
		getSessionFactory().getCurrentSession().update(encargado);
	}


	@Override
	public void deleteEncargado(Encargado encargado) {
		getSessionFactory().getCurrentSession().delete(encargado);
	}


	@Override
	public Encargado getEncargadoById(int id) {
		List encargados = getSessionFactory().getCurrentSession().createQuery("FROM Encargado WHERE id=?").setParameter(0, id).list();
		return (Encargado) encargados.get(0);
	}


	@Override
	public List<Encargado> getEncargados() {
		List encargados = getSessionFactory().getCurrentSession().createQuery("FROM Encargado").list();
		return encargados;
	}

	/**
	 * Devuelve un(a) session factory.
	 *
	 * @return El/la session factory
	 */
	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	/**
	 * Asigna el/la session factory.
	 *
	 * @param sessionFactory un(a) nuevo(a) session factory
	 */
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

}
